﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Text;

namespace HML
{
    /// <summary>
    /// 主题对象
    /// </summary>
    public interface ISkinObject
    {
        /// <summary>
        /// 主题对象在主题文件的名称
        /// </summary>
        SkinObjectXmlMetadata SkinObjectXmlMetadata { get; }

        /// <summary>
        /// 主题控制器
        /// </summary>
        SkinController SkinController { get; set; }

        /// <summary>
        /// 主题是否启用
        /// </summary>
        SkinEnabledState SkinEnabled { get; set; }

        /// <summary>
        /// 主题风格
        /// </summary>
        SkinStyle SkinStyle { get; set; }

        /// <summary>
        /// 主题设置跟随指定主题对象（自己的设置不再生效，提供给代码使用）
        /// </summary>
        [Browsable(false)]
        [EditorBrowsable(EditorBrowsableState.Never)]
        [Localizable(false)]
        [DesignerSerializationVisibility( DesignerSerializationVisibility.Hidden)]
        ISkinObject FollowSkinObject { get; set; }

        ///// <summary>
        ///// 风格外观
        ///// </summary>
        //AppearanceObjectBase派生类 StyleAppearance { get; set; }

        /// <summary>
        /// 主题已发生更改 
        /// </summary>
        void OnSkinChanged();

        /// <summary>
        /// 获取主题对象的主题启用状态
        /// </summary>
        /// <returns></returns>
        bool GetSkinObjectSkinStateCore();

        /// <summary>
        /// 刷新控件(必须显式实现)
        /// </summary>
        void Invalidate();

        /// <summary>
        /// 重新布局内部元素并刷新控件(必须显式实现)
        /// </summary>
        void InitializeInvalidate();

    }

}
